/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */
package persistencia;

import Utiles.Utiles;
import entidades.HistoricoPrecioImpl;
import java.sql.ResultSet;
import java.util.ArrayList;
import java.util.Date;
import java.util.List;
import persistencia.agente.HistoricoPrecioAgente;

/**
 *
 * @author mariodante
 */
public class IntermediarioHistoricoPrecio extends IntermediarioPersistencia {
     @Override
    protected String generarSQLBuscarConCriterio(Criterio criterio) {
        String sql = "SELECT * FROM HISTORICO_PRECIO WHERE " + criterio.convertirAString();
        return sql;
    }

    @Override
    protected String generarSQLBuscarTodo() {
        return "SELECT * FROM HISTORICO_PRECIO";
    }

    @Override
    protected String generarSQLBuscarXOid(String oid) {
         return "SELECT * FROM HISTORICO_PRECIO WHERE oidHistoricoPrecio = '" + oid +"'";
    }

    @Override
    protected String generarSQLGuardar(Object objeto) {
        HistoricoPrecioAgente ob = (HistoricoPrecioAgente)objeto;
                
        String sql = "INSERT INTO HISTORICO_PRECIO (oidHistoricoPrecio, fechaDesde , fechaHasta"
                + ", precio, oidServicio, oidProducto ) VALUES ("
                + "'" + 
                //generarOid()
                ob.getOid() 
                // ob.getOid() == null || ob.getOid().trim().equals("")? generarOid() : ob.getOid()
                + "', '" + Utiles.convertirATIMESTAMP( ob.getFechaDesde())
                + "', '" + Utiles.convertirATIMESTAMP( ob.getFechaHasta())
                + "', " + ob.getPrecio()
                +Utiles.verificarOIDvacio(ob.getOidServicio())
                //ob.getOidServicio() == null ? + "'null'" + : ob.getOidServicio()
                //ob.getOidServicio()
                +  Utiles.verificarOIDvacio(ob.getOidProducto())
                //ob.getOidProducto() == null ? "'null'" : ob.getOidProducto()
                //+ ob.getOidProducto()
                + ")";
        System.out.println("SQL Guardar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLActualizar(Object objeto) {
        HistoricoPrecioAgente ob = (HistoricoPrecioAgente)objeto;
        
        String sql = "UPDATE HISTORICO_PRECIO SET "
                + "fechaDesde = '" + Utiles.convertirATIMESTAMP( ob.getFechaDesde())
                + "', fechaHasta = '" + Utiles.convertirATIMESTAMP( ob.getFechaHasta())
                + "', precio = " + ob.getPrecio()
                + ", oidServicio = '" + ob.getOidServicio()
                + "', oidProducto = '" + ob.getOidProducto()
                + "' WHERE oidHistoricoPrecio = '" + ob.getOid() + "'";
        System.out.println("SQL Actualizar: " + sql);
        return sql;
    }

    @Override
    protected String generarSQLEliminar(Object objeto) {
        return "DELETE FROM HISTORICO_PRECIO WHERE oidHistoricoPrecio = '" + ((Agente) objeto).getOid() + "'";
    }

    @Override
    protected List<Object> convertirAObjeto(ResultSet result) {
        
        List<Object> resultado = new ArrayList<Object>();
        HistoricoPrecioImpl implementacion;
        HistoricoPrecioAgente agente;

        try {
            while (result.next()) {
                implementacion = new HistoricoPrecioImpl();
                agente = new HistoricoPrecioAgente();
                agente.setHistoricoPrecioImpl(implementacion);

                agente.setOid(result.getString("oidHistoricoPrecio"));
                agente.setFechaDesde(result.getDate("fechaDesde"));
                agente.setFechaHasta(result.getDate("fechaHasta"));
                agente.setPrecio(result.getDouble("precio"));
                agente.setOidServicio(result.getString("oidServicio"));
                agente.setOidProducto(result.getString("oidProducto"));
                
                resultado.add(agente);
            }

        } catch (Exception e) {
            System.out.println("Error en materialización historico precio: " + e.toString());
        }

        return resultado;
    }

    @Override
    protected boolean guardarObjetosCompuestos(Object objeto) {
        throw new UnsupportedOperationException("Not supported yet.");
    }

    
}
